Desktop virtualization is a technology that allows a user's desktop computing environment (“desktop”) to be hosted remotely on a server system, rather than locally on the user's computing device. When the user wishes to access his/her desktop, the user's computing device (referred to as a “client device”) connects to the server system using a remote desktop protocol (or “remoting protocol”). The server system then initiates execution of the user's desktop and communicates, via the remoting protocol, with the client computer system in a manner that enables the user to view and interact with the desktop, in real-time or near real-time, on the client device.
An important aspect of assessing the performance of a virtual desktop deployment is understanding the quality of the end-user experience. This quality will depend on, for example, the amount of latency a user perceives as he/she is interacting with his/her desktop. Understanding this quality is particularly important in large scale (e.g., enterprise) deployments since users in such deployments typically connect to their desktops under a variety of different network conditions, and since a particular server system may host many (e.g., tens, hundreds, or more) desktops that share server resources. Both of these factors (varying network conditions and high desktop-to-server consolidation ratio) increase the likelihood that users will experience poor performance at some point during their remote desktop sessions.
One way of understanding the quality of the end-user experience is to ask users to fill out surveys that describe their experiences when accessing their desktops in various scenarios. However, this approach is difficult to manage in a large deployment and relies on subjective user impressions, which may not be accurate. Another way of understanding the quality of the end-user experience is to collect statistics regarding the load (e.g., CPU load, disk I/O, etc.) of the server system and/or the client devices at runtime. However, since these statistics are not “first order” statistics from a user experience perspective (in other words, they do not directly measure metrics perceived by users, such as user-perceived latency or response time), they can only provide a rough idea of remote desktop session performance. Yet another way of understanding the quality of the end-user experience is to configure a test client device and a test server system to simulate a remote desktop workload, and then manually (or via custom testing code) measure the response time on the client-side for particular operations. The problem with this approach is that it cannot be applied to different types of remote desktop implementations or different types of remote desktop workloads without significant reworking of the test configuration, and it cannot provide performance measurements for real-time remote desktop workloads in live (e.g., production) deployments.